﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data;
using System.Data.Entity;
using AplicacionTickets.Models;


namespace MvcTickets.Web.Controllers
{
    public class HomeController : Controller
    {
        private TicketsDB db = new TicketsDB();

        //
        // GET: /Home/
        // GET: /?t=Concierto

        public ActionResult Index(string t = "")
        {
            var eSig = db.Espectaculos;


            var retornatipo = eSig.Where(e => e.Artista.Tipo == t).ToList();

            if (t != "" && retornatipo != null)
            {
                
                return View(eSig.Where(e => e.Artista.Tipo == t).OrderBy(e => e.FechaHora).Take(10).ToList());

            }
            else
                return View(eSig.OrderBy(e => e.FechaHora).Take(10).ToList());
        }


        //
        //GET: /Home/Destacados?t=Concierto

        public ActionResult Destacados(string t = "")
        {

            var espect = db.Espectaculos;

            var retornatipo = espect.Where(e => e.Artista.Tipo == t).ToList();

            if (t != "" && retornatipo != null)
            {
                return View(espect.Where(e => e.Artista.Tipo == t).OrderByDescending(e => e.Entradas.Count()).Take(10).ToList());

            }
            else
                return View(espect.OrderByDescending(e => e.Entradas.Count()).Take(10).ToList());
        }



        //
        // GET: /Home/Detalles/5

        public ActionResult Detalles(int id)
        {
            Espectaculo espectaculo = db.Espectaculos.Find(id);
            
            return View(espectaculo);
        }



        public ActionResult About()
        {

            return View();
        }

        public ActionResult Contact()
        {

            return View();
        }

        [Authorize]
        public ActionResult Comprar(string tipoEnt, int id)
        {
            Espectaculo e = db.Espectaculos.Find(id);
            if (tipoEnt == "G")
            {
                return View(e);
            }
            else return View(e);
        }

        [Authorize]
        [HttpPost]
        public ActionResult Comprar(Espectaculo espectaculo)
        {
            if (ModelState.IsValid)
            {
                Espectaculo eOrig = db.Espectaculos.Find(espectaculo.EspectaculoId);

                for (int i = 1; i <=espectaculo.CantGen;i++)
                {
                    db.Entradas.Add(
                        new Entrada
                        {
                            Espectaculo = eOrig,
                            Estado = "Comprada",
                            FechaVenta = DateTime.Now,
                            NumAsiento = 0,
                            NumFila = 0,
                            Precio = eOrig.PrecioEGen,
                            UserName = espectaculo.EspectaculoImageUrl
                        });
                }
                //a la cantidad original de entradas generales, le resto las que vendi
                eOrig.CantGen = eOrig.CantGen - espectaculo.CantGen;
                db.Entry(eOrig).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(espectaculo);
        }

    }
}
